75A000:	Vram 1
7A0400:	Vram 2


780800:	
	addiu	29,29,FFE8
	lui	4, BE00
	sw	31,29,0014
	jal	80788000
	sw	16,29,0010
   814:
	lui	2,0040
	lui	1,A000
	sw	2,1,0318
	jal	807A7A58
	nop
   828:	loads a check for code list or generator?
	lui	3,A07E
	ori	3,3,9C00	//3=A07E9C00
	lui	4,A07C
	ori	4,4,9C00	//4=A07C9C00
	lui	6,A07E
	ori	6,6,9C00	//6=A07E9C00
	addu	5,r0,r0
	lui	2,807A
	sw	3,9E10 (2)	//80799E10=A07E9C00
	lui	2,807A
	sw	4,9DF8 (2)	//80799DF8=A07C9C00
	addu	2,6,5
   854:	memset routine by the looks of it
	sb	r0,0000 (2)
	addiu	5,5,0001
	sltiu	2,5,0168
	bne	r0,2,80780854
	addu	2,6,5
   86C:	
	lui	4,A060
	jal	80785C30
	lui	5,A070
   878:
	jal	8078EF74
	lui	16,807A
   880:	get # codes to activate!
	lw	2,16,9E10	//2=80799E10=A07E9C00=code/memedit area
	lui	3,807A
	sw	r0,B1D0 (3)	//8079B1D0=0
	addiu	2,2,0160
	lui	1,A078
	sw	2,1,040C	//8078040C=A07E9D60=# codes to activate!
	jal	80790B74
	nop
   8A0:
	lw	2,9E10 (16)	//2=80799E10=A07E9C00=code/memedit area
	addiu	3,2,0164	//3=A07E9D64=list of codes to activate
	sw	3,0000 (2)	//A07E9C00=A07E9D64
	lw	4,0000 (2)	//4=A07E9D64
	addiu	3,2,02AC	//3=A07EA010
	sw	3,00C8 (2)	//807E9CC8=A07EA010
	sw	4,00CC (2)	//807E9CCC=A07E9D64
	addiu	4,3,0194	//4=A07EA1A4
	addiu	3,3,0238	//3=A07EA248
	sw	4,00D0 (2)	//A07E9CD0=A07EA1A4
	jal	80794A80
	sw	3,00D4 (2)	//A07E9CD4=A07EA248
   8D0:
	lw	31,0014 (29)
	lw	16,0010 (29)
	jr	31
	addiu	29,29,0018
   8E0:



   B74:	active code list check of sorts
	addu	18,5,r0
	sw	17,0014 (29)
	addiu	17,6,00FF
	addiu	2,r0,FF00
	and	17,17,2
	lui	3,00C0
	lui	2,807A
	lw	2,9D04 (2)	//2=80799D04=BE000000
	or	4,4,3
	sw	31,001C (29)
	sw	16,0010 (29)
	beq	r0,17,80780BC4
	or	16,4,2
   BA8:
	addu	4,16,r0
	jal	8078EDD0
	addiu	16,16,0001
   BB4:
	sb	2,0000 (18)
	addiu	17,17,FFFF
	bne	r0,17,80780BA8
	addiu	18,18,0001
   BC4:
	lw	31,001C (29)
	lw	18,0018 (29)
	lw	17,0014 (29)
	lw	16,0010 (29)
	jr	31
	addiu	29,29,0020
   BDC:


7845AC:	
	lui	v1,807A
	lui	v0,A040
	sw	v0,B308 (v1)	//8079B308=VI_REG address
	lui	v1,807A
	lui	v0,A048
	sw	v0,B320 (v1)	//8079B320=SI_REG address
	lui	v1,807A
	lui	v0,A000
	sw	v0,B324 (v1)	//8079B324=RDRAM mirror address
	lui	v0,8079
	lw	v1,5980 (v0)	//v1=??? (usually=8)
	addiu	v0,r0,0008
	beq	v0,v1 807845F4
	addiu	v0,r0,0010
   5E4:
	beq	v0,v1 80784604
	addiu	v0,r0,FFFF
   5EC:
	j	80784610
	nop
   5F4:
	jal	80783474
	lui	a0,A040
   5FC:
	j	80784610
	addiu	v0,r0,FFFF
   604:
	jal	807844E4
	lui	a0,A040
   60C:
	addiu	v0,r0,FFFF
	beq	v0,s3 +BF
	addu	s0,r0,r0


7879F4:
	addiu	sp,sp,FFEC
	sw	ra,0010 (sp)
	lui	t0,BEC0
	ori	t0,t0,1000	//t0=BEC01000
	lui	t1,8000
	ori	t1,t1,0400	//t1=80000400
	lui	t2,0003
	ori	t2,t2,F000	//t2=0002F000
	lw	t3,0000 (t0)	//t3=???
	addiu	t0,t0,0004
	sw	t3,0000 (t1)
	addiu	t2,t2,FFFC
	bne	r0,t2 -5
	addiu	t1,t1,0004
   A38:
	jal	80787A58
	nop
   A40:
	jal	800004A0
	nop
787A48:
	lw	ra,0010 (sp)
	addiu	sp,sp,0014
	jr	ra
	nop
787A58:
	


788050:	check PI status
	lui	v1,A460
	lw	v0,0010 (v1)
	andi	v0,v0,0003
	bne	r0,v0 80798050
	nop
	jr	ra
	nop
78806C:
	addiu	sp,sp,FFD8
	sw	s1,0014 (sp)
	addu	s1,a0,r0
	sw	s3,001C (sp)
	addu	s3,a1,r0
	sw	s2,0018 (sp)
	addu	s2,a2,r0
	sw	ra,0020 (sp)
	jal	80788050
	sw	s0,0010 (sp)
   094:
	blez	s2 807880B4
	addu	s0,r0,r0
   09C:
	jal	80787AB4
	addu	a0,s1,s0
   0A4:
	addiu	s0,s0,0004
	slt	v0,s0,s2
	bne	r0,v0, -5
	nop
7880B4:	generic load from ROM	[s1=rdram , s3=rom , s2=writelen]
	lui	v1,1FFF
	ori	v1,v1,FFFF	//address mask
	addiu	s0,r0,03E7
	lui	a0,A460
	and	v0,s1,v1
	and	v1,s3,v1
	sw	v0,0000 (a0)	//send destination address
	addiu	v0,s2,FFFF
	sw	v1,0004 (a0)	//send ROM address
	sw	v0,000C (a0)	//write length
	addiu	s0,s0,FFFF
	bgez	s0 +FFFF
	addiu	s0,s0,FFFF	//sit around doing nothing for awhile
	jal	80788050
	nop
7880F0:
	lw	ra,0020 (sp)
	lw	s3,001C (sp)
	lw	s2,0018 (sp)
	lw	s1,0014 (sp)
	lw	s0,0010 (sp)
	jr	ra
	addiu	sp,sp,0028



7936D0:	store original game's VI registers
	lui	2,A440
	lw	4,0000 (2)
	lui	3,807A
	sw	4,A000 (3)	//8079A000=VI_STATUS_REG
	lw	4,0004 (2)
	lw	5,0008 (2)
	lw	6,0014 (2)
	lw	7,0018 (2)
	lw	8,001C (2)
	lw	9,0020 (2)
	lw	10,0024 (2)
	lw	11,0028 (2)
	lw	12,002C (2)
	lw	13,0030 (2)
	lw	2,0034 (2)
	addiu	3,3,A000	//3=8079A000
	sw	4,0004 (3)
	sw	5,0008 (3)
	sw	6,0014 (3)
	sw	7,0018 (3)
	sw	8,001C (3)
	sw	9,0020 (3)
	sw	10,0024 (3)
	sw	11,0028 (3)
	sw	12,002C (3)
	sw	13,0030 (3)
	jr	31
	sw	2,0034 (3)
79373C:
	addiu	29,29,FFE8
	sw	31,0010 (29)
	jal	80785460
	nop
   750:	load original game's VI registers
	lui	3,807A
	addiu	2,3,A040	//2=8079A040
	lw	3,A040 (3)	
	lw	4,0004 (2)
	lw	5,0008 (2)
	lw	6,0014 (2)
	lw	7,0018 (2)
	lw	8,001C (2)
	lw	9,0020 (2)
	lw	10,0024 (2)
	lw	11,0028 (2)
	lw	12,002C (2)
	lw	13,0030 (2)
	lw	14,0034 (2)
	lui	2,A440
	sw	3,0000 (2)	
	sw	4,0004 (2)
	sw	5,0008 (2)
	sw	6,0014 (2)
	sw	7,0018 (2)
	sw	8,001C (2)
	sw	9,0020 (2)
	sw	10,0024 (2)
	sw	11,0028 (2)
	sw	12,002C (2)
	sw	13,0030 (2)
	sw	14,0034 (2)
	lw	31,0010 (29)
	jr	31
	addiu	29,29,0018
7937C8:	load VI registers
	lui	2,A440
	lw	4,0000 (2)
	lui	3,807A
	sw	4,A040 (3)
	lw	4,0004 (2)
	lw	5,0008 (2)
	lw	6,0014 (2)
	lw	7,0018 (2)
	lw	8,001C (2)
	lw	9,0020 (2)
	lw	10,0024 (2)
	lw	11,0028 (2)
	lw	12,002C (2)
	lw	13,0030 (2)
	lw	2,0034 (2)
	addiu	3,3,A040
	sw	4,0004 (3)
	sw	5,0008 (3)
	sw	6,0014 (3)
	sw	7,0018 (3)
	sw	8,001C (3)
	sw	9,0020 (3)
	sw	10,0024 (3)
	sw	11,0028 (3)
	sw	12,002C (3)
	sw	13,0030 (3)
	jr	31
	sw	2,0034 (3)
79383C:
	jr	31
	nop
793840:
	addiu	29,29,FFE8
	sw	31,0010 (29)
	jal	80787EE0
	nop
   850:
	addiu	3,r0,0003
	bne	3,2,80793864
	nop
   85C:
	jal	80791AB4
	nop
   864:
	lw	31,0010 (29)
	jr	31
	addiu	29,29,0018
793870:
	addiu	29,29,FFD8
	sw	31,0024 (29)
	jal	80787AE8
	sw	16,0020 (29)
   880:
	lui	16,807A
	addiu	4,r0,FFFE
	and	4,2,4
	jal	80787AF4
	sw	2,B1EC (16)
   894:
	jal	80793840
	nop
   89C:
	jal	80787F80
	addu	4,r0,r0
	andi	2,2,0400
	bne	r0,2,+5A
	nop
   8B0:
	jal	80787F80
	addu	4,r0,r0
   8B8:
	andi	2,2,0400
	beq	r0,2, 807838B0
	lui	3,A07E
   8C4:	
	ori	3,3,9C00	//3=A07E9C00
	lui	4,A07C
	ori	4,4,9C00	//4=A07C9C00
	addu	8,r0,r0
	addu	9,r0,r0
	lui	2,807A
	sw	3,9E10 (2)	//80799E10=A07E9C00
	lui	2,807A
	sw	4,9DF8 (2)	//80799DF8=A07C9C00
	lui	2,F7BC
	ori	2,2,F7BC
	lui	3,F7BC
	ori	3,3,F7BC
	lui	1,807A
	sw	8,B228 (1)	//8079B228=0
	lui	1,807A
	sw	9,B22C (1)	//8079B22C=0
	lui	1,807A
	sw	2,B300 (1)	//8079B300=F7BCF7BC
	lui	1,807A
	sw	3,B304 (1)	//8079B304=F7BCF7BC
	jal	80785DF0
	nop
   920:
	addu	5,r0,r0
	lui	2,807A
	addiu	4,2,A000	//4=8079A000
	lui	3,A440
   930:	copy VI regs to 8079A000
	lw	2,0000 (3)	//2=VI_REG
	addiu	3,3,0004	//3=*next VI_REG
	addiu	5,5,0001
	sw	2,0000 (4)	//8079A000=VI_STATUS
	slti	2,5,000E
	bne	r0,2,80793930
	addiu	4,4,0004
   94C:
	jal	80785460
	lui	16,807A
   954:
	jal	80785948
	addu	4,r0,r0
   95C:
	addu	4,r0,r0
	addu	5,4,r0
	addiu	6,0,0140
	addiu	7,0,00F0
	sw	r0,0010 (29)
	sw	r0,0014 (29)
	jal	807935B0
	sw	r0,0018 (29)
   97C:
	jal	80792F8C
	nop
   984:


794ADC:
	lui	k0,8079
	addiu	k0,k0,4AEC	//k0(26)=80794AEC
	jr	k0
	nop
794AEC:
	cop0
	ori	k1,r0,005C
	andi	k0,k0,007C
	beq	k1,k0,80794B30
	nop
   B00:
	bne	r0,k0,80794B20
	nop
794B08:
	lui	k0,A430
	lw	k0,0008 (k0)	//k0=MI_INTERUPT_REQ
	nop
	andi	k1,k0,0002
	bne	r0,k1 80794B28
	nop
794B20:
	j	80000192
	nop
794B28:
	j	80794B40
	nop
    B30:
	lui	k0,BEC2
	ori	k0,k0,F000
	jr	k0	//jump to BEC2F000?  that's weird...
	nop
794B40:
	lui	k0,8079
	addiu	k0,k0,4A70
	sw	sp,0000 (k0)	//sp->80794A70
	lui	sp,807F
	ori	sp,sp,FF00	//sp=807FFF00
	addiu	sp,sp,FFB4
	sw	ra,0010 (sp)	//807EFF10=ra
	sw	v0,0014 (sp)	//807EFF14=v0
	sw	v1,0018 (sp)	//807EFF18=v1
	sw	a0,001C (sp)	//807EFF1C=a0
	sw	a1,0020 (sp)	//807EFF20=a1
	sw	a2,0024 (sp)	//807EFF24=a2
	sw	a3,0028 (sp)	//807EFF28=a3
	sw	t0,002C (sp)	//807EFF2C=t0
	sw	t1,0030 (sp)	//807EFF30=t1
	sw	t2,0034 (sp)	//807EFF34=t2
	sw	t3,0038 (sp)	//807EFF38=t3
	sw	t4,003C (sp)	//807EFF3C=t4
	sw	t5,0040 (sp)	//807EFF40=t5
	sw	t6,0044 (sp)	//807EFF44=t6
	sw	t7,0048 (sp)	//807EFF48=t7
	jal	80793870
	nop
794B9C:
	beq	v0,r0, 80794BBB4
	nop
   BA4:
	cop0
	nop
	cop0
	nop
   BB4:
	lui	k0,807A
	addiu	k0,k0,A080	//k0=8079A080
	lw	k1,0000 (k0)	//k1=0 if codes on, 1 if codes off
	bne	r0,k1, 80794BD0	//1 if codes disabled.  if disabled, skip lists and head back to game
	nop
	jal	80794C40	//handle "active codes" list (code generator)
	nop
794BD0:	head back to original game code...
	lw	ra,0010 (sp)
	lw	v0,0014 (sp)	//807EFF14=v0
	lw	v1,0018 (sp)	//807EFF18=v1
	lw	a0,001C (sp)	//807EFF1C=a0
	lw	a1,0020 (sp)	//807EFF20=a1
	lw	a2,0024 (sp)	//807EFF24=a2
	lw	a3,0028 (sp)	//807EFF28=a3
	lw	t0,002C (sp)	//807EFF2C=t0
	lw	t1,0030 (sp)	//807EFF30=t1
	lw	t2,0034 (sp)	//807EFF34=t2
	lw	t3,0038 (sp)	//807EFF38=t3
	lw	t4,003C (sp)	//807EFF3C=t4
	lw	t5,0040 (sp)	//807EFF40=t5
	lw	t6,0044 (sp)	//807EFF44=t6
	lw	t7,0048 (sp)	//807EFF48=t7
	addiu	sp,sp,006C
	lui	k0,8079
	addiu	k0,k0,4A70	//k0=80794A70
	lw	sp,0000 (k0)
	lui	k0,807A
	addiu	k0,k0,A080	//k0=8079A080
	lw	k1,0000 (k0)	//k1=0 if codes on, 1 if off
	bne	0,k1,80794C38
	nop
   C30:	go to codelist if == 0
	j	807C5C00	//changing this jump will change the location of the codelist!!!
	nop
   C38:	else, just go back to interrupt (return to game)
	j	80000120
	nop
794C40:	"active codes" from active code list (code generator)
	addiu	sp,sp,FFEC
	sw	a0,0000 (sp)
	sw	a1,0004 (sp)
	sw	a2,0008 (sp)
	sw	a3,000C (sp)
	sw	t6,0010 (sp)
	lui	a0,8078
	lw	a0,040C (a0)	//a0=A07E9D60
	lw	a3,0000 (a0)	//a3=# additional codes to activate!!
794C60:	grab each code from list and execute!
	beq	r0,a3, +28	//skip this crap if there aren't any activated codes
	lwl	a1,0004 (a0)
   C68:	pull and test code type
	lwr	a1,0007 (a0)	//this pulls the "gs codes" from the code offset
	lui	k0,D000
	and	k1,a1,k0	//mask the codetype (test for Dx type)
	bne	k0,k1 80794CD8	//skip if normal write
	lh	a2,0008 (a0)	//load code value
   C80:	Dx-conditional type
	lui	k0,0100
	and	k1,a1,k0	//test for 1 or 2 byte read
	lui	k0,80FF
	ori	k0,k0,FFFF	//k0=code to address mask
	bgtz	k1, 80794CA0	//do a 2-byte read
	and	a1,a1,k0	//a1=address to write to
	beq	k1,k1, 80794CA4	//do a 1-byte read
	lb	t6,0000 (a1)	
   CA0:
	lh	t6,0000 (a1)	//t6= value at address
   CA4:
	lui	k0,0200
	and	k1,a1,k0
	beq	k0,k1 80794CC4	//if a != read, branch
	nop
   CB4:	D0/D1 type if= conditional test 
	beq	a2,t6 80794CFC
	nop
   CBC:
	beq	k1,k1 80794CCC
	nop
   CC4:	D2/D3 type if!= conditional test
	bne	a2,t6 80794CFC
	nop
   CCC:	this subtracts twice, skipping next code if condition not true
	addi	a3,a3,FFFF
	beq	k1,k1 80794CFC
	addi	a0,a0,0006
   CD8:	8x write to address
	lui	k0,0100
	and	k1,a1,k0
	lui	k0,80FF
	ori	k0,k0,FFFF
	bgtz	k1 80794CF8
	and	a1,a1,k0
   CF0:
	beq	k1,k1 80794CFC
	sb	a2,0000 (a1)
   CF8:
	sh	a2,0000 (a1)	//store value to address
   CFC:
	addiu	a3,a3,FFFF
   D00:	next verse same as the first
	bgtz	a3 80794C60	//loop for each code in list
	addi	a0,a0,0006
794D08:
	lw	a0,0000 (sp)
	lw	a1,0004 (sp)
	lw	a2,0008 (sp)
	lw	a3,000C (sp)
	lw	t6,0010 (sp)
	addiu	sp,sp,0014
	jr	ra
	nop

794D28:
	lui	k0,0004
	lw	a3,0000 (a1)
	nop
	sw	a3,0000 (a0)
	addi	a0,a0,0004
	addi	a1,a1,0004
	addiu	k0,k0,FFFF
	bgtz	k0 80794D28
	nop
   D4C:
	lui	t0,8000
	addiu	t1,t0,3000	//t1=80003000
	addiu	t1,t1,FFF0	//t1=7FFF3010
	cache
	sltu	t1,t0,0x82B
	bne	r0,at 80794D54
	addiu	t0,t0,0020
	jr	a2
	nop
794D8C:
	lui	a0,8000
	ori	a0,a0,02C0
	addiu	a1,r0,0001
	sw	a1,0000 (a0)
	lui	a1,810B
	ori	a1,a1,A3DC	//a1=810AA3DC
	sw	a1,a0,0004
	addiu	a1,r0,3F80	//a1=810AE35C
	sh	a1,a0,0008
	jr	ra
	nop


794DB8:	text and pointer arrays
	



795960:	pointers to VI registers, used in "view gfx memory"
VI_DRAM_ADDR
VI_H_WIDTH
VI_X_SCALE_REG
VI_Y_SCALE_REG


797900:	pointer to cheat ASM


799DF8:	pointer to cheat ASM
A07C5C00

799E10:	pointer to code generator & memory editor stuff
A07E9C00

799E20:	pointers to menu text
0x78/120 pointers

79A000:	original game's VI interupts




79A160:	PIF commands (send or store?)
79A1B0:	pointer to new PIFram (send or recieve?)

-

7C5C00:	cheat ASM

-	Memory Editor and Code Generator stuff
7E9C00:	pointer to new activated cheats
7E9C07: codes on (0) or off (1)

7E9C40:	always = 1

7E9C70:	always = 1

7E9C88:	option # selected on return to previous menu
7E9C90: current memory editor address
7E9C94: always = 1
7E9C98: current nibble (0-0x10)
7E9C9C:	current row (0-?)
7E9CA0:	cursor = nibble (0) or byte (1)

7E9CA8:	goto address in memory editor

7E9CBC:	# results displayed (0-0x64)
7E9CC0:	# results selected (0-0x63)

7E9CC8:	A07E9EAC	pointer to addresses displayed in code generator
7E9CCC:	A07E9D64	pointer to active codes
7E9CD0:	A07EA040	?
7E9CD4:	A07EA0E4	?

7E9CEC:	# possibilites from search
7E9CF0:	integer search value

7E9D34:	text search string, NULL terminated

7E9D60:	# following codes to activate
7E9D64:	active codes list.  6byte codes following typical gs pattern.  types 80,81,D0,D1 supported
to write addresses to active code list, send A07E9D60...

7E9EAC:	addresses displayed in code generator (not complete list)

